import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../providers/timeline_provider.dart';
import '../providers/mood_provider.dart';
import '../models/memory.dart';
import '../models/timeline_event.dart';
import '../widgets/timeline_item.dart';
import '../widgets/timeline_event_item.dart';
import 'add_timeline_event_screen.dart';

class TimelineScreen extends StatelessWidget {
  const TimelineScreen({super.key});

  @override
  Widget build(BuildContext context) {
    return Consumer<TimelineProvider>(
      builder: (context, timelineProvider, child) {
        // 获取时光轴事件和示例记忆
        final events = timelineProvider.events;
        final memories = _getSampleMemories();
        
        // 合并并按日期排序
        final allItems = <dynamic>[];
        allItems.addAll(events);
        allItems.addAll(memories);
        
        // 按日期倒序排列
        allItems.sort((a, b) {
          final dateA = a is TimelineEvent ? a.date : (a as Memory).date;
          final dateB = b is TimelineEvent ? b.date : (b as Memory).date;
          return dateB.compareTo(dateA);
        });
        
        return Scaffold(
          backgroundColor: Colors.transparent,
          body: Container(
            decoration: const BoxDecoration(
              gradient: LinearGradient(
                begin: Alignment.topCenter,
                end: Alignment.bottomCenter,
                colors: [
                  Color(0xFFF9FAFB),
                  Color(0xFFF3F4F6),
                ],
              ),
            ),
            child: allItems.isEmpty
                ? _buildEmptyState()
                : ListView.builder(
                    padding: const EdgeInsets.all(16),
                    itemCount: allItems.length,
                    itemBuilder: (context, index) {
                      final item = allItems[index];
                      final isLast = index == allItems.length - 1;
                      
                      if (item is TimelineEvent) {
                        return TimelineEventItem(
                          event: item,
                          isLast: isLast,
                        );
                      } else {
                        return TimelineItem(
                          memory: item as Memory,
                          isLast: isLast,
                        );
                      }
                    },
                  ),
          ),
          floatingActionButton: FloatingActionButton(
            onPressed: () {
              showModalBottomSheet(
                context: context,
                isScrollControlled: true,
                backgroundColor: Colors.transparent,
                builder: (context) => const AddTimelineEventScreen(),
              );
            },
            backgroundColor: const Color(0xFFFF6B9D),
            foregroundColor: Colors.white,
            elevation: 4,
            child: const Icon(Icons.add, size: 28),
          ),
        );
      },
    );
  }

  Widget _buildEmptyState() {
    return Center(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          Icon(
            Icons.timeline,
            size: 64,
            color: Colors.grey.shade400,
          ),
          const SizedBox(height: 16),
          Text(
            '还没有时光轴记录',
            style: TextStyle(
              fontSize: 18,
              color: Colors.grey.shade600,
              fontWeight: FontWeight.w500,
            ),
          ),
          const SizedBox(height: 8),
          Text(
            '点击右下角的按钮添加第一个美好回忆吧',
            style: TextStyle(
              fontSize: 14,
              color: Colors.grey.shade500,
            ),
          ),
        ],
      ),
    );
  }

  List<Memory> _getSampleMemories() {
    return [
      // 图片记录示例 - 海边日落
      Memory(
        id: '1',
        title: '海边的日落',
        description: '那天傍晚的风，和你的侧脸，都好温柔。',
        content: '''那天傍晚的风，和你的侧脸，都好温柔。

我们手牵手走在沙滩上，看着太阳慢慢沉入海平面，那一刻觉得时间都静止了。

海浪轻抚着沙滩，就像你温柔的话语轻抚着我的心。

夕阳西下，把整个天空染成了粉红色，就像我们初恋时脸颊的红晕。

那一刻，我想时间永远停留在这里，和你一起看遍世间所有的日落。''',
        date: DateTime.now().subtract(const Duration(days: 1)),
        author: '👩',
        mood: MoodType.happy,
        tags: ['浪漫', '海边'],
        imagePaths: ['海边日落1.jpg', '海边日落2.jpg', '海边日落3.jpg'],
        imageCount: 3,
      ),

      // 图片记录示例 - 咖啡厅约会
      Memory(
        id: '2',
        title: '第一次约会',
        description: '咖啡厅里的初次相遇，从那时起就知道你是对的人。',
        content: '''还记得我们第一次见面的咖啡厅吗？

你点了拿铁，我点了美式，我们聊了整整一个下午。

从那时起就知道你是对的人。

你说话时眼睛里有星星，笑起来的样子让我心动不已。

那杯咖啡的香味，至今还留在我的记忆里，就像你留在我心里一样深刻。

从那个下午开始，我就知道，我想和你一起度过更多这样的时光。''',
        date: DateTime.now().subtract(const Duration(days: 3)),
        author: '👨',
        mood: MoodType.love,
        tags: ['约会', '咖啡'],
        imagePaths: ['咖啡厅1.jpg', '咖啡厅2.jpg'],
        imageCount: 2,
      ),

      // 纯文本记录示例
      Memory(
        id: '3',
        title: '今天的心情日记',
        description: '记录今天特别好的心情和对生活的感悟',
        content: '''今天是个特别的日子，虽然没有什么特别的事情发生，但是心情格外好。

早上醒来的时候，阳光正好透过窗帘洒在床上，那种温暖的感觉让人舍不得起床。

想起昨天晚上我们一起看的那部电影，你说的那句话一直在我心里回响："最美好的时光，就是和你在一起的每一个平凡的瞬间。"

是啊，平凡却珍贵，简单却美好。

希望我们能一直这样，在平凡的日子里找到不平凡的幸福。''',
        date: DateTime.now().subtract(const Duration(days: 5)),
        author: '👩',
        mood: MoodType.happy,
        tags: ['心情', '日记'],
      ),

      // 图片记录示例 - 美食分享
      Memory(
        id: '4',
        title: '一起做晚餐',
        description: '第一次一起下厨，虽然有点手忙脚乱，但很开心。',
        content: '''第一次一起做晚餐，虽然有点手忙脚乱，但很开心。

你负责切菜，我负责炒菜，厨房里充满了欢声笑语。

虽然最后做出来的菜卖相不太好，但是味道意外的不错。

最重要的是，和你一起做的每一件事都变得特别有意义。

这就是爱情的魔力吧，平凡的事情因为有了你而变得不平凡。''',
        date: DateTime.now().subtract(const Duration(days: 7)),
        author: '👨',
        mood: MoodType.happy,
        tags: ['美食', '生活'],
        imagePaths: ['美食1.jpg', '美食2.jpg', '美食3.jpg', '美食4.jpg'],
        imageCount: 4,
      ),
      
      // 纯文本诗歌
      Memory(
        id: '5',
        title: '写给你的小诗',
        description: '用诗歌表达内心的爱意',
        content: '''如果我是风
你就是那片云
我愿意追随你到天涯海角

如果我是雨
你就是那朵花
我愿意滋润你的每一个梦想

如果我是星
你就是那轮月
我愿意为你点亮整个夜空

如果我是我
你就是你
我愿意用一生的时间
去爱你''',
        date: DateTime.now().subtract(const Duration(days: 10)),
        author: '👨',
        mood: MoodType.love,
        tags: ['诗歌', '浪漫'],
      ),

      // 图片记录示例 - 电影院
      Memory(
        id: '6',
        title: '看电影的夜晚',
        description: '一起看了一部浪漫电影，你说最美好的时光就是和我在一起。',
        content: '''一起看了一部浪漫电影，你说最美好的时光就是和我在一起。

电影院里昏暗的灯光，大屏幕上播放着动人的爱情故事。

但我发现，最吸引我的不是电影，而是你专注看电影时的侧脸。

电影结束后，我们手牵手走在夜晚的街道上，讨论着电影的情节。

那一刻我想，有你在身边，每一个平凡的夜晚都变得浪漫。''',
        date: DateTime.now().subtract(const Duration(days: 12)),
        author: '👩',
        mood: MoodType.love,
        tags: ['电影', '约会'],
        imagePaths: ['电影院.jpg'],
        imageCount: 1,
      ),
      
      // 纯文本感悟
      Memory(
        id: '7',
        title: '关于爱情的思考',
        description: '对爱情的深度思考和感悟',
        content: '''爱情是什么？

是早上醒来时看到你的笑脸
是下雨天为你撑起的那把伞
是深夜里为你点亮的那盏灯
是生病时你温柔的照顾
是开心时想要第一个分享给你的冲动
是难过时你给我的那个拥抱

爱情不是轰轰烈烈的誓言
而是细水长流的陪伴
不是山盟海誓的承诺
而是日复一日的坚持

我想，爱情就是
在平凡的日子里
依然选择和你在一起
在漫长的岁月中
依然为你心动如初''',
        date: DateTime.now().subtract(const Duration(days: 15)),
        author: '👩',
        mood: MoodType.thoughtful,
        tags: ['感悟', '爱情'],
      ),

      // 图片记录示例 - 书店
      Memory(
        id: '8',
        title: '书店里的时光',
        description: '在书店里待了一整个下午，你推荐的那本书真的很好看。',
        content: '''在书店里待了一整个下午，你推荐的那本书真的很好看。

我们各自找了一个角落，安静地看书。

偶尔抬头看看你专注阅读的样子，心里满满的都是幸福。

书店里淡淡的书香，温暖的灯光，还有你在身边的安全感。

这样简单的时光，却是我最珍贵的回忆。''',
        date: DateTime.now().subtract(const Duration(days: 18)),
        author: '👨',
        mood: MoodType.happy,
        tags: ['书店', '阅读'],
        imagePaths: ['书店1.jpg', '书店2.jpg'],
        imageCount: 2,
      ),
      
      // 短文本记录
      Memory(
        id: '9',
        title: '今天想对你说',
        description: '想要表达的感谢和爱意',
        content: '谢谢你总是在我需要的时候出现，谢谢你的耐心和包容，谢谢你让我相信爱情的美好。',
        date: DateTime.now().subtract(const Duration(days: 20)),
        author: '👨',
        mood: MoodType.grateful,
        tags: ['感谢', '爱情'],
      ),
    ];
  }
}